Согласно «Повести временных лет», Олег был родичем (соплеменником) Рюрика.

В. Н. Татищев со ссылкой на сомнительную Иоакимовскую летопись считает его шурином — братом жены Рюрика, которую называет Ефандой.

После смерти основателя княжеской династии Рюрика в 879 году Олег стал княжить в Новгороде как опекун малолетнего сына Рюрика Игоря.

Согласно Повести временных лет, в 882 году Олег, взяв с собой много воинов: варягов, чудь, словен, мерю, весь, кривичей — взял города Смоленск и Любеч и посадил там своих мужей. Далее по Днепру спустился к Киеву, где княжили соплеменники Рюрика, варяги Аскольд и Дир. Притворившись «гостем подугорским», Олег отправил к ним посла со словами: «Купцы мы, едем в греки от Олега и от Игоря княжича, да приходите к роду своему и к нам». Когда Аскольд и Дир вышли из города, Олег объявил им: «Вы нєста кнѧзѧ ни роду кнѧжѧ · но азъ єсмь роду кнѧжѧ» («Вы не князья и не княжего роду, а я княжего роду») и предъявил наследника Рюрика, малолетнего Игоря, после чего Аскольд и Дир были убиты.

Расположение Киева показалось Олегу достаточно удобным, и он перебрался туда с дружиной, объявив: «Да будет это мать городов русских». Тем самым он объединил северный и южный центры восточных славян. По этой причине именно Олега, а не Рюрика иногда считают основателем Киевской Руси. Вокняжившись в Киеве, Олег установил для Новгорода дань варягам в 300 гривен. Под его властью оказался путь «из варяг в греки».

Следующие 25 лет Олег был занят расширением подвластной территории. Он подчинил Киеву древлян (883), северян (884), радимичей (885). Два последних племенных союза были данниками хазар. Повесть временных лет оставила текст обращения Олега к северянам: «Я враг хазарам, поэтому и вам незачем платить им дань». К радимичам: «Кому дань даёте?». Те ответили: «хазарам». И говорит Олег: «Не давайте хазарам, но мне давайте». «И владел Олег деревлянами, полянами, радимичами, а с — уличами и тиверцами имѣяше рать».

898 годом Повесть временных лет датирует появление под Киевом угров (венгров) в ходе их миграции на запад, фактически произошедшее несколькими годами ранее.

В 907 году, снарядив 2000 ладей по 40 воинов в каждой Олег выступил в поход на Царьград. Византийский император Лев VI Философ приказал закрыть ворота города и загородить цепями гавань, предоставив таким образом воинам Олега возможность грабить и разорять пригороды Константинополя. Однако Олег пошёл на необычный штурм:

И повелел Олег своим воинам сделать колёса и поставить на колёса корабли. И когда подул попутный ветер, подняли они в поле паруса и пошли к городу.

Испуганные греки предложили Олегу мир и дань. Согласно договору, он получил по 12 гривен за каждую уключину, и Византия обещала платить дань на русские города. В знак победы Олег прибил свой щит к вратам Царьграда. Главным результатом похода стал торговый договор о беспошлинной торговле Руси в Византии.

Многие историки считают этот поход легендой. О нём нет упоминаний у византийских авторов, достаточно подробно описавших подобные походы в 860 и 941.

Есть сомнения и в отношении договора 907 года, текст которого представляет собой почти дословную компиляцию договоров 911 и 944 гг. Возможно, поход всё же был, но без осады Царьграда.

В 911 году Олег отправил в Константинополь посольство, которое подтвердило «многолетний» мир и заключило новый договор. По сравнению с договором 907 года из него исчезает упоминание о беспошлинной торговле. Олег именуется в договоре «великим князем русским». В подлинности соглашения 911 года сомнений не возникает: она подкрепляется как лингвистическим анализом, так и упоминанием в византийских источниках.

Осенью 912 года, как сообщает Повесть временных лет, князь Олег погиб от укуса змеи.

По преданию, волхвы предсказали князю, что он умрёт от своего любимого коня. Олег приказал увести коня и вспомнил о предсказании только через четыре года, когда конь уже давно умер. Олег посмеялся над волхвами и захотел посмотреть на кости коня, встал ногой на череп и сказал: «Его ли мне бояться?» Однако в черепе коня жила ядовитая змея, смертельно укусившая князя.